/**
*┌──────────────────────────────────────────────────────────────┐
*│　描    述：Users                                                    
*│　作    者：NetCoreCMS                                              
*│　版    本：1.0   模板代码自动生成                                              
*│　创建时间：2019-12-25 10:52:46                           
*└──────────────────────────────────────────────────────────────┘
*┌──────────────────────────────────────────────────────────────┐
*│　命名空间： NetCoreCMS.IServices                                   
*│　接口名称： IUsersRepository                                      
*└──────────────────────────────────────────────────────────────┘
*/
using System;
using System.Collections.Generic;
using System.Text;

namespace NetCoreCMS.IServices
{
    public interface IUsersService
    {
        bool Exists(string username);
        bool Exists(int id);
        bool Upgrade(int id);
        /// <summary>
        /// 使用where子句执行查询，并将结果映射到具有Paging的强类型List
        /// </summary>
        /// <param name="pageNumber">页码</param>
        /// <param name="rowsPerPage">每页显示数据</param>
        /// <param name="conditions">查询条件</param>
        /// <param name="orderby">排序</param>
        /// <param name="parameters">参数</param>
        /// <returns></returns>
        List<Models.Users> GetList(int pageNumber, int rowsPerPage, string conditions, string orderby, object parameters = null);
        int RecordCount(string conditions, object parameters = null);
        bool Delete(int id);
        int UpdateField(int id, string strValue);
        List<Models.Users> GetList(string conditions);
        Models.Users GetModel(int id);
        Models.Users GetModel(string user_name);
        int Add(Models.Users model);
        bool Update(Models.Users model);
        // <summary>
        /// 根据用户名密码返回一个实体
        /// </summary>
        /// <param name="user_name">用户名(明文)</param>
        /// <param name="password">密码</param>
        /// <param name="emaillogin">是否允许邮箱做为登录</param>
        /// <param name="mobilelogin">是否允许手机做为登录</param>
        /// <param name="is_encrypt">是否需要加密密码</param>
        /// <returns></returns>
        Models.Users GetModel(string user_name, string password, int emaillogin, int mobilelogin, bool is_encrypt);
        /// <summary>
        /// 检查同一IP注册间隔(小时)内是否存在
        /// </summary>
        bool Exists(string reg_ip, int regctrl);
        /// <summary>
        /// 检查Email是否存在
        /// </summary>
        bool ExistsEmail(string email);
        /// <summary>
        /// 检查手机号码是否存在
        /// </summary>
        bool ExistsMobile(string mobile);
        string GetSalt(string user_name);
        List<Models.User_code> get_user_invite_list(int top, string strwhere);
        /// <summary>
        /// 返回邀请码状态
        /// </summary>
        /// <param name="str_code">邀请码</param>
        /// <returns>bool</returns>
        bool get_invite_status(string str_code);
        /// <summary>
        /// 返回一个随机用户名
        /// </summary>
        string GetRandomName(int length);
        #region Finance
        List<Models.Users> GetListPid(int id);
        List<Models.Users> GetListIid(int id);
        /// <summary>
        /// 左右区人
        /// </summary>
        /// <param name="indirectid"></param>
        /// <param name="leftright">1 left,2 right</param>
        /// <returns></returns>
        Models.Users GetUserByIndirectID(int iid, int leftright);
        
        #endregion
    }
}